/** 
 * 載入配置文件和函數庫
 */
##include texas / config / systemInc.as 
##include texas / texas / internalEvent.as

##include texas / texas / produceRoomData.as
##include texas / debug.as


var __schControler; //多任务管理器
var __conn;			//默認數據庫鏈接對象 
var __roomEvent;	//房間擴展類
var __userEvent;	//用戶擴展類
var __gameEvent;	//撲克操作類
var __betEvent;		//叫牌分池类
var __friendsEvent;
var __AIEvent;		//AI事件类

//var __api;		//api鏈接類
var __log;			//日誌類
var __sys;
var __task;			//计时线程管理
var __internalEvent	//服務端事件處理
var __hall_room;  	//大廳房間，所有在大廳的玩家多在此房間中，該房間為islimbo模式
var __hall = {};  	//游戏场
var __room_list = []; //游戏房间

var __debug;  		//控制臺輸出
var __userVars;     //玩家变量
var __roomVars;		//房间变量
var _roomAc ;		//房間事件接收類
var _userAc;		//用戶事件接收類
var _pokerAc;		//撲克事件接收類

var _zone;			//當前区域

/** 
 * 服務啟動初始化 
 */ 
function init() {	
	__out.println("\n\n\n=========================================  start  ======================================\n");	
	_initializeApp();	
	__sys.gc();								//查看内存使用情况	
	__conn = new loadDB("debug");			//连接数据库	
	produceRoomData(false);
	_zone = _server.getCurrentZone();
	__internalEvent = new internalEvent();	//初始系統事件類					
	__roomVars.formatRoomVariable();  		//初始化房間
	__schControler = new schControler();	//初始化任务管理类
	__schControler.start();				    //开启任务调度服务	
	__sys.memInfo();		
}

function _initializeApp() {
	/*========= 变量处理 =============================================*/
	__userVars = new userVars();
	__roomVars = new roomVars();
	
	/* 事件偵聽 */
	/*=====================  事件偵聽   =============================*/
	_roomAc  = new roomAc();					//房間事件
	_userAc  = new userAc();					//用戶事件
	_pokerAc = new pokerAc();				//撲克操作事件
	
	/*==============遊戲事件處理類，並發送消息 ======================*/
	__roomEvent = new roomEvent();			//房间事件處理類
	__userEvent = new userEvent();			//会员事件處理類
	__gameEvent = new gameEvent();			//撲克操作事件處理類	
	__betEvent  = new betEvent();			//扑克叫牌分池事件處理類
	__AIEvent   = new AIEvent();				//機器人
	__friendsEvent = new friendsEvent();
	
	/*====== 工具类 ==============================================*/
	__log   = new log();						//日誌初始類	
	__sys   = new system();					//内存管理
	__debug = new debug(true);			
}

/**
 * 處理客戶端事件
 * @param	cmd		事件標識
 * @param	params	參數（類型不限，已經綁定事件類型）
 * @param	user	事件所對應的用戶
 * @param	fromRoom	事件對應的房間
 */ 
function handleRequest(cmd, params, user, fromRoom) {
	var _params = { };
	var _actionRes = { };
	switch(cmd) {
		case "userAc":
			_userAc.handleFun(fromRoom, user, params);
			break;
		case "pokerAc":
			_pokerAc.handleFun(fromRoom, user, params);
			break;
		case "roomAc":
			_roomAc.handleFun(fromRoom, user, params);
			break;
		case "gaemAc":
			_gameAc.handleFun(fromRoom, user, params);
			break;
		default:
			_params._cmd = "responseDefault";
			break;
	}
}


/**
  *服務器端事件處理函數 
  * 響應的事件有：fileUpload loginRequest logOut newRoom playerSwitched pubMsg privMsg roomLost spectatorSwitched userExit userJoin userLost
  * @param	evt 
  */
function handleInternalEvent(evt) {		
	__internalEvent.handleFun(evt); 
}

/**
 * 銷毀服務器，釋放資源
 */
function destroy() {	
	trace("====================destroy===================");		
}





